﻿using System;
using Jayden.Dll.Web.HtmlControls.Descriptions;
using Jayden.Dll.Web.HtmlControls.Generics;

namespace Jayden.Dll.Web.HtmlControls
{
	public abstract class H : HtmlElement
	{
		public H(HDescription desciption) : base(desciption) { }
	}
	public class H1 : H { public H1() : base(H1Description.Instance) { } }
	public class H2 : H { public H2() : base(H2Description.Instance) { } }
	public class H3 : H { public H3() : base(H3Description.Instance) { } }
	public class H4 : H { public H4() : base(H4Description.Instance) { } }
	public class H5 : H { public H5() : base(H5Description.Instance) { } }
	public class H6 : H { public H6() : base(H6Description.Instance) { } }

	public abstract class HDescription : HtmlElementDescription
	{
		protected HDescription(int size) : base("h" + size) { }
		public override string Description { get { return "headings for the sections with which they are associated."; } }
		public override Type ControlType { get { return typeof(H); } }
		public override bool IsFlowElement { get { return true; } }
		public override bool OnlyPhrasingContent { get { return true; } }
	}
	public class H1Description : HDescription
	{
		public static H1Description Instance = new H1Description();
		private H1Description() : base(1) { }
	}
	public class H2Description : HDescription
	{
		public static H2Description Instance = new H2Description();
		private H2Description() : base(2) { }
	}
	public class H3Description : HDescription
	{
		public static H3Description Instance = new H3Description();
		private H3Description() : base(3) { }
	}
	public class H4Description : HDescription
	{
		public static H4Description Instance = new H4Description();
		private H4Description() : base(4) { }
	}
	public class H5Description : HDescription
	{
		public static H5Description Instance = new H5Description();
		private H5Description() : base(5) { }
	}
	public class H6Description : HDescription
	{
		public static H6Description Instance = new H6Description();
		private H6Description() : base(6) { }
	}
}
